/*
 * TacticaPeRRaKo.java
 *
 * Created on 15 de marzo de 2007, 19:30
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.TacticaPeRRaKo;

import futbol.Bola;
import futbol.Partido;
import futbol.tacticas.concursantes.Tactica;

import java.awt.*;
import java.util.Vector;
import futbol.tacticas.*;
/**
 *
 * @author Migueln
 */
public class TacticaPeRRaKo implements Tactica{

   private int nValores[][]={
           {-150,0,3},     //jugador 1[0] (portero)
           {-100,30,5},    //jugador 2[1] (defensa)
           {-100,-30,5},   //jugador 3[2] (defensa)
           {-10,-100,1},    //jugador 4[3] (defensa)
           {-10,100,6},    //jugador 5[4] (defensa)
           {40,-60,6},    //jugador 6[5] (centrocampista)
           {0,20,5},    //jugador 7[6] (centrocampista)
           {100,0,7},    //jugador 8[7] (centrocampista)
           {40,60,7},    //jugador 9[8] (centrocampista)
           {130,50,8},    //jugador 10[9] (delantero)
           {130,-50,8}    //jugador 11[10]  (delantero)
   };

   /**
    * Creates a new instance of TacticaPeRRaKo
    */
   public TacticaPeRRaKo() {
   }

   public Color getColor1() {
       return Color.BLACK;
   }


   public Color getColor2() {
       return Color.ORANGE;
   }

   public Color getColorNumero() {
       return Color.WHITE;
   }

   public String getNombre() {
       return "R.C. PeRRaKoS";
   }

   public int getXInicial(int n) {
       return nValores[n][0];
   }

   public int getYInicial(int n) {
       return nValores[n][1];
   }

   public int getFuerza(int n) {
       return nValores[n][2];
   }

   public Vector<Comando> getComandos(SituacionJugadores sj) {
       Vector<Comando> com=new Vector();
       for (int n=0;n<11;n++){
            if (n==5)
               n=n++;

            com.add(new ComandoIrA(n,nValores[n][0],nValores[n][1]));
       }
           Point bola=sj.getBola();
           Point jugadores[]=sj.getMisJugadores();
           Point contrarios[]=sj.getContrario();

           //Realizamos los marcajes a los delanteros
           if (!sj.estoyMasCercaDeBola() || bola.getX()<0){
                for (int n=1;n<4;n++){
                    int nJC=sj.getContrarioMasCerca(getXInicial(n), getYInicial(n));
                    com.add(new ComandoIrA(n, contrarios[nJC].getX()+10, contrarios[nJC].getY()));
                }
           }


           /*Hacemos que el jugador 6 no reciba la orden de posicionarse para que
            *vaya siempre a por la pelota, ser el acosador*/

       //Ir a por la pelota
       int nJug=sj.getMasCercanoDeBola();
       com.add(new ComandoIrA(nJug,bola.getX(), bola.getY()));

       //Este jugador siempre ira a por la pelota
       com.add(new ComandoIrA(6,bola.getX(), bola.getY()));

       //Realizar los pases
       com.add(new ComandoPase(0,5));
       com.add(new ComandoPase(1,5));
       com.add(new ComandoPase(2,5));
       com.add(new ComandoPase(3,8));
       com.add(new ComandoPase(4,5));
       com.add(new ComandoPase(5,10));
       com.add(new ComandoPase(6,10));
       com.add(new ComandoPase(8,9));

       //Movimiento del portero
       int y=(int) (bola.getY()/2);
       if (y<-20) y=-25;
       if (y>20) y=25;
       com.add(new ComandoIrA(0,nValores[0][0],y));


       //Chutar a puerta
       com.add(new ComandoTiroAPuerta(7,15));
       com.add(new ComandoTiroAPuerta(9,15));
       com.add(new ComandoTiroAPuerta(10,15));
       return com;


   }
}